package com.yuanxiong.getweather.util;

import android.graphics.Color;
import android.text.TextUtils;
import android.util.Log;

import com.google.gson.Gson;
import com.yuanxiong.getweather.gson.AreaInfo;
import com.yuanxiong.getweather.gson.ChartInfo;
import com.yuanxiong.getweather.gson.WeatherInfo;

import java.util.ArrayList;
import java.util.List;

import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.model.ValueShape;
import lecho.lib.hellocharts.view.LineChartView;

/**
 * 辅助工具类
 */

public class Utility {

    public static AreaInfo handleAreaResponse(String response) {
        try {
            return new Gson().fromJson(response, AreaInfo.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    public static WeatherInfo handleWeatherResponse(String response) {
        try {
            return new Gson().fromJson(response, WeatherInfo.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    private static float convertToFloat(String number, float defaultValue) {
        Log.d("WeatherActivity", "convertToFloat: " + number);
        if (TextUtils.isEmpty(number)) {
            return defaultValue;
        }
        try {
            return Float.parseFloat(number);
        } catch (Exception e) {
            return defaultValue;
        }
    }

    public static void setChartViewData(List<ChartInfo> futureList, LineChartView lineChart) {

        //X轴数据点  各个属性介绍地址：http://www.jianshu.com/p/7e8de03dad79
        List<PointValue> mPointValues = new ArrayList<>();
        //底部时间
        List<AxisValue> axisXBottomValues = new ArrayList<>();

        for (int i = 0; i < futureList.size(); i++) {
            //数据点
            mPointValues.add(new PointValue(i, Utility.convertToFloat(futureList.get(i).getHighTmp(), 0)));
            //底部数据点
            axisXBottomValues.add(new AxisValue(i).setLabel(futureList.get(i).getDate()));

        }


        Line line = new Line(mPointValues);
        //存放线条的集合
        List<Line> lines = new ArrayList<>();
        //LineChartValueFormatter chartValueFormatter = new SimpleLineChartValueFormatter(2);
        //line.setFormatter(chartValueFormatter);//显示小数点（后2位）
        line.setHasLabels(true);//曲线的数据坐标是否加上备注
        line.setShape(ValueShape.DIAMOND);//折线图上每个数据点的形状 这里是圆形 （
        //有三种 ：ValueShape.SQUARE(方形)  ValueShape.CIRCLE(圆形)  ValueShape.DIAMOND (菱形)）
        line.setPointRadius(3);//坐标点大小
        line.setSquare(true);//是否以直角的形式显示线
        line.setCubic(true);//曲线是否平滑
        line.setFilled(false);//是否填充曲线的面积
        //line.setHasLabelsOnlyForSelected(false);//点击数据坐标提示数据（设置了这个line.setHasLabels(true);就无效）
        line.setHasLines(true);//是否用直线显示。如果为false 则没有曲线只有点显示
        line.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示
        line.setColor(Color.parseColor("#FEB04C"));
        line.setStrokeWidth(1);//设置线的宽度
        lines.add(line);

        LineChartData data = new LineChartData();
        data.setLines(lines);
        //设置数据的初始值，即所有的数据从baseValue开始计算，默认值为0。
        data.setBaseValue(Float.NEGATIVE_INFINITY);

        //传入底部list数据
        Axis axisX = new Axis();
        //设置底部标题(自行选择) 只能设置在正中间
        //axisX.setName("时间(h)");
        //底部标注是否斜着显示
        //axisX.setHasTiltedLabels(true);
        //字体大小
        axisX.setTextSize(12);
        //字体颜色
        axisX.setTextColor(Color.parseColor("#FFFFFF"));
        //距离各标签之间的距离 (0-32之间)
        //axisX.setMaxLabelChars(4);
        //是否显示坐标线、如果为false 则没有曲线只有点显示
        axisX.setHasLines(true);
        axisX.setValues(axisXBottomValues);
        //axisX.setAutoGenerated(true);
        data.setAxisXBottom(axisX);

        //左边参数设置
        Axis axisY = new Axis();
        //axisY.setMaxLabelChars(2); //最多几个X轴坐标，意思就是你的缩放让X轴上数据的个数
        axisY.setTextSize(12);
        axisY.setTextColor(Color.parseColor("#FFFFFF"));
        axisY.setHasLines(true);
        //axisY.setAutoGenerated(true);
        //axisY.setValues(axisXLeftValues);
        //设置坐标轴在左边
        data.setAxisYLeft(axisY);

        //设置行为属性，支持缩放、滑动以及平移
        lineChart.setInteractive(false);
        //水平缩放
        //lineChart.setZoomType(ZoomType.HORIZONTAL);
        //是否可滑动
        lineChart.setScrollEnabled(false);
        //放入数据源至控件中
        lineChart.setLineChartData(data);


    }

    public static String getHighNum(String str) {
        //"1/7℃

        String s1 = str.substring(0, str.indexOf("℃"));
        Log.d("WeatherActivity", "getHighNum: " + s1);

        String result = s1.substring(s1.indexOf("/") + 1);
        Log.d("WeatherActivity", "result: " + result);
        return result;
    }

    public static String getMonthDate(String str) {
        String result = str.substring(str.indexOf("-") + 1);
        return result;
    }

}
